package com.autumn.sms.service.services;

import com.autumn.application.dto.input.DefaultPrimaryKeyInput;
import com.autumn.application.dto.output.DefaultGmtModifiedOutput;

/**
 * 基本服务
 * @author JuWa ▪ Zhang
 * @date 2018年1月8日
 */
public interface IBasicService<TInput, TOutput extends DefaultGmtModifiedOutput> {
	/**
	 * 添加新记录
	 * 
	 * @param input
	 *            输入
	 * @return
	 */
	TOutput add(TInput input);

	/**
	 * 修改记录
	 * 
	 * @param input
	 *            输入
	 * @return
	 */
	TOutput modify(TInput input);

	/**
	 * 根据主键ID删除记录
	 * 
	 * @param input
	 *            输入
	 */
	void delete(DefaultPrimaryKeyInput input);

	/**
	 * 获取输出实例
	 * 
	 * @param input
	 *            输入
	 * @return
	 */
	TOutput get(DefaultPrimaryKeyInput input);
	
	/**
	 * 发布(短信应用，平台信息，平台模板，标准模板，应用模板)
	 * @param input
	 * @return
	 */
	void release(DefaultPrimaryKeyInput input);
	
	/**
	 * 下架/停用 (短信应用，平台信息，平台模板，标准模板，应用模板)
	 * @param input
	 */
	void disable(DefaultPrimaryKeyInput input);
}
